package com.mdata.model.dto.wechat.result;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.ToString;

/**
 * errcode 	返回码
 * errmsg 	对返回码的文本描述内容
 * userid 	成员UserID。对应管理端的帐号，企业内必须唯一。不区分大小写，长度为1~64个字节
 * name 	成员名称；第三方不可获取，调用时返回userid以代替name；代开发自建应用需要管理员授权才返回；对于非第三方创建的成员，第三方通讯录应用也不可获取；未返回name的情况需要通过通讯录展示组件来展示名字
 * mobile 	手机号码，代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * department 	成员所属部门id列表，仅返回该应用有查看权限的部门id；成员授权模式下，固定返回根部门id，即固定为1
 * order 	部门内的排序值，默认为0。数量必须和department一致，数值越大排序越前面。值范围是[0, 2^32)。成员授权模式下不返回该字段
 * position 	职务信息；代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * gender 	性别。0表示未定义，1表示男性，2表示女性
 * email 	邮箱，代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * is_leader_in_dept 	表示在所在的部门内是否为部门负责人；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * direct_leader 	直属上级UserID，最多有五个直属上级；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * avatar 	头像url。 第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * thumb_avatar 	头像缩略图url。第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * telephone 	座机。代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * alias 	别名；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * extattr 	扩展属性，代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * status 	激活状态: 1=已激活，2=已禁用，4=未激活，5=退出企业。
 * 已激活代表已激活企业微信或已关注微工作台（原企业号）。未激活代表既未激活企业微信又未关注微工作台（原企业号）。
 * qr_code 	员工个人二维码，扫描可添加为外部联系人(注意返回的是一个url，可在浏览器上打开该url以展示二维码)；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * external_profile 	成员对外属性，字段详情见对外属性；代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * external_position 	对外职务，如果设置了该值，则以此作为对外展示的职务，否则以position来展示。代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * address 	地址。代开发自建应用需要管理员授权才返回；第三方仅通讯录应用可获取；对于非第三方创建的成员，第三方通讯录应用也不可获取
 * open_userid 	全局唯一。对于同一个服务商，不同应用获取到企业内同一个成员的open_userid是相同的，最多64个字节。仅第三方应用可获取
 * main_department 	主部门
 */
@Data
@ToString(callSuper = true)
public class UserGetResult extends WeChatBaseResult{

    @JsonProperty(value = "userid")
    private String userId;

    @JsonProperty(value = "name")
    private String name;

    @JsonProperty(value = "mobile")
    private String mobile;

    @JsonProperty(value = "department")
    private int[] department;

    @JsonProperty(value = "gender")
    private String gender;

    @JsonProperty(value = "email")
    private String email;

    @JsonProperty(value = "avatar")
    private String avatar;
}
